// 文件选择
export function chooseFilesImg(currentFiles, maxCount = 9, maxSize = 5 * 1024 *
	1024) {
	return new Promise((resolve, reject) => {
		uni.chooseImage({
			count: maxCount - currentFiles.length, // 仅允许选择剩余的图片数量
			success: (res) => {
				let tempFiles = res.tempFiles;
				let validFiles = [];

				tempFiles.forEach(file => {
					// 检查文件大小
					if (file.size > maxSize) {
						uni.showToast({
							title: '文件大小不能超过5MB',
							icon: 'none'
						});
					}
					else {
						validFiles.push(file);
					}
				});

				// 返回合法文件列表
				resolve(currentFiles.concat(validFiles).slice(0, maxCount));
			},
			fail: (error) => {
				reject(error);
			}
		});
	});
}

// 文件选择
export function chooseFiles(currentFiles, sourceType, maxCount = 9,
	maxImageSize = 5 * 1024 * 1024, maxVideoSize = 50 *
	1024 *
	1024, itemList = ['选择图片', '选择视频']) {
	return new Promise((resolve, reject) => {
		uni.showActionSheet({
			itemList: itemList,
			success: (res) => {
				if (res.tapIndex === 0) {
					// 选择图片
					uni.chooseImage({
						sourceType: sourceType,
						count: maxCount - currentFiles.length, // 仅允许选择剩余的图片数量
						success: (res) => {
							let tempFiles = res.tempFiles;
							let validFiles = [];

							tempFiles.forEach(file => {
								if (file.size > maxImageSize) {
									uni.showToast({
										title: '图片文件大小不能超过5MB',
										icon: 'none'
									});
								}
								else {
									validFiles.push(file);
								}
							});

							// 返回合法文件列表
							resolve(currentFiles.concat(validFiles).slice(0,
								maxCount));
						},
						fail: (error) => {
							reject(error);
						}
					});
				}
				else if (res.tapIndex === 1) {
					// 选择视频
					uni.chooseVideo({
						sourceType: sourceType,
						success: (res) => {
							res['type'] = 'video';
							if (res.size > maxVideoSize) {
								uni.showToast({
									title: '视频文件大小不能超过50MB',
									icon: 'none'
								});
								reject(new Error('视频文件大小超出限制'));
							}
							else {
								resolve(currentFiles.concat([res]).slice(0,
									maxCount));
							}
						},
						fail: (error) => {
							reject(error);
						}
					});
				}
			},
			fail: (error) => {
				reject(error);
			}
		});
	});
}

// 删除已选择的文件
export function removeFile(files, index) {
	files.splice(index, 1); // 移除指定索引的文件
	return files; // 返回删除后的文件列表
}

// 上传文件
export function uploadFiles(files, uploadUrl) {
	return Promise.all(files.map(file => {
		return new Promise((resolve, reject) => {
			uni.uploadFile({
				url: uploadUrl, // 替换为你的上传接口地址
				filePath: file.path || file.tempFilePath,
				name: 'file',
				header: {
					Authorization: uni.getStorageSync('authToken')
				},
				success: (uploadRes) => {
					resolve(uploadRes);
				},
				fail: (error) => {
					reject(error);
				}
			});
		});
	}));
}

// 图片预览
export function previewImage(files, index) {
	const urls = files.map(file => {
		if (typeof file === 'string') {
			return file
		}
		else {
			return file.path
		}
	}); // 获取所有图片的路径
	uni.previewImage({
		current: urls[index], // 当前预览的图片路径
		urls: urls // 所有图片的路径列表
	});
}